package com.zliblike_platform.service;

import com.zliblike_platform.dto.BookRequestDTO;
import com.zliblike_platform.dto.BookRequestUpdateDTO;
import com.zliblike_platform.vo.BookRequestVO;
import com.zliblike_platform.vo.PageResult;

/**
 * 书籍请求服务接口
 */
public interface BookRequestService {
    
    /**
     * 创建书籍请求
     * @param userId 用户ID
     * @param requestDTO 请求参数
     * @return 请求ID
     */
    Long createRequest(Long userId, BookRequestDTO requestDTO);
    
    /**
     * 更新书籍请求状态
     * @param userId 操作用户ID
     * @param updateDTO 更新参数
     * @return 是否更新成功
     */
    boolean updateRequestStatus(Long userId, BookRequestUpdateDTO updateDTO);
    
    /**
     * 查询所有书籍请求（分页）
     * @param status 状态过滤
     * @param page 页码
     * @param size 每页数量
     * @return 分页结果
     */
    PageResult<BookRequestVO> getAllRequests(String status, Integer page, Integer size);
    
    /**
     * 查询用户的书籍请求（分页）
     * @param userId 用户ID
     * @param status 状态过滤
     * @param page 页码
     * @param size 每页数量
     * @return 分页结果
     */
    PageResult<BookRequestVO> getUserRequests(Long userId, String status, Integer page, Integer size);
    
    /**
     * 获取书籍请求详情
     * @param requestId 请求ID
     * @param userId 当前用户ID（用于判断是否可编辑）
     * @return 请求详情
     */
    BookRequestVO getRequestDetail(Long requestId, Long userId);
    
    /**
     * 删除书籍请求
     * @param requestId 请求ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteRequest(Long requestId, Long userId);
    
    /**
     * 检查ISBN是否已存在于请求中
     * @param isbn ISBN
     * @return 是否存在
     */
    boolean isbnExists(String isbn);
} 